1. Field of the Invention
The present invention generally relates to computer systems, and more particularly to a method of automatically adjusting the line speed for communication between a client and a server.
2. Description of the Related Art
Computers are often required to communicate with each other, such as when a client (workstation) desires to connect to a server (node). This communication may be established to allow the server to provide information directly to the client, or to allow the server to act as an intermediary in passing information to the client from a larger network of servers. The client includes data communications equipment (DCE, also referred to as data circuit terminating equipment) which interfaces with data terminal equipment (DTE) of the server, to form a channel or transmission circuit. Different protocols are used in the prior art to establish and maintain communications between the DCE and the DTE. Protocols are often optimized based on various criteria, such as the nature of the data being transmitted. Most protocols provide the same basic functionality, by using common features including framing, error detection, error recovery, polling, addressing, and flow control.
Data communications between a client and server are either synchronous or asynchronous. With asynchronous transmission, time intervals between transmitted characters may be of unequal length, and each transmitted character is sent separately. Transmission is controlled by start and stop bits at the beginning and end of each character so that the character can be sent at an arbitrary time, and separate from any other character. With synchronous transmission, characters are sent at a fixed rate, in blocks, with the transmitting and receiving devices synchronized. Synchronization is achieved by sending a clock signal along with the data, and by sending special bit patterns to denote the start of each block.
Protocols generally fall into one of three categories, bit-oriented (synchronous), asynchronous character-oriented, or synchronous character-oriented. Examples of bit-oriented protocols include X.25 (using packets over public data networks), systems network architecture (SNA) developed by International Business Machines Corp. (IBM), and integrated services digital network (ISDN). An example of an asynchronous character-oriented protocol is the VT-Series developed by Digital Equipment Corp. Examples of synchronous character-oriented protocols include DDCMP (digital data communication message protocol), and BiSync (binary synchronous communications, developed by International Business Machines Corp.). The BiSync protocol provides rules for the synchronous transmission of binary data as a serial stream of binary digits. Synchronization is established using bit patterns or control characters.
Another bit-oriented protocol which is generally more efficient than BiSync is synchronous data link control (SDLC), used in SNA environments. SDLC can control an individual channel and still accommodate other network requirements. SDLC uses a variety of patterns to flag the beginning and end of a frame or packet. Different bit patterns are used to convey address, control and header fields which accompany the transmission and guide the frame to its destination.
A hybrid between the SDLC and the ASYNC protocols is called SDLC over ASYNC. In this environment, the 3 major hardware rules of the SDLC protocol (that are implemented in hardware and software on an SDLC connection) are applied via software to data being sent over an asynchronous link.
The 3 protocol rules are:
a) each block of data begins and ends with a block-delimiting character (a "7E"X). PA1 b) each block of data has a CRC (cyclic redundancy check) associated with it to guarantee data integrity for that block. PA1 c) each information block has a sequence counter in it that ensures frames are received in the correct order at the receiver. PA1 starting and ending flags; PA1 SDLC station address; PA1 SDLC control byte (to indicate the type of frame); PA1 CRC to verify data integrity.
All blocks of data on an SDLC over ASYNC link contain the same elements found in a block of data on a real synchronous connection:
SDLC over ASYNC is intended to provide the benefits of SDLC, including interconnection with other SNA-SNA nodes, through an inexpensive medium (an ASYNC port is standard equipment on many personal computers and network stations).
One problem that is not addressed in these prior art protocols relates to the speed of the communications. For example, a conventional console for an AS/400 computer (sold by IBM) having a multi-function input/output processor supports a personal computer (PC) client that communicates with the AS/400 server at a fixed baud rate of 9600 bits per second (bps). This value was hard-wired into both the PC and the AS/400. Modern servers can now, however, communicate easily at significantly faster speeds up to, e.g., 115 kilobits per second (kbps). Similarly, PCs are now being manufactured with greatly increased CPU speeds and most, if not all, have a high-speed universal asynchronous receiver/transmitter (UART), allowing baud rates of, e.g., 115 kbps also.
With such advances in hardware, software should be capable of increasing performance and line speed to take advantage of the hardware but, presently, there is no way to accomplish this without some type of manual configuration change on the server and the client. While it might be possible to use software to automatically detect the line speed for certain input/output processors (IOPs), similar to the detection performed with a conventional AS/400 ASCII work station controller, this approach has limitations (the algorithm only supports a limited number of detectable BAUD Rates), and the algorithm will not work in some IOPs, where the low-level code cannot effectuate such auto-sensing through the chip.
It would, therefore, be desirable to provide a flexible method which allows DCE to communicate at a speed higher than a default speed of DTE. It would be further advantageous if the method were sensitive to clients and servers that have not implemented any special functionality regarding the communications speed.